/*
 * @Author: hucc
 * @Date: 2021-09-28 11:23:18
 * @LastEditors: hucc
 * @LastEditTime: 2021-10-06 15:39:25
 * @Description: 
 */
let sy1 = Symbol('one');
let sy2 = Symbol('one');
console.log(sy1, sy2);
console.log(sy1 == sy2); //false

//Symbol.for() 创建的symbol会放入一个全局symbol注册表中
//它首先会检查给定的key 是否已经在注册表中了，假如存在则会返回上次存储的那个
//否则会再新建一个
let sy3 = Symbol.for('two');
let sy4 = Symbol.for('two');
console.log(sy3, sy4);
console.log(sy3 == sy4); //true

//Symbol.keyFor() 在Symbol.for()创建的symbol对象中，根据Symbol值找key值 找到了返回key值 找不到返回undefined
console.log(Symbol.keyFor(sy1)); //undefined
console.log(Symbol.keyFor(sy2)); //undefined
console.log(Symbol.keyFor(sy3)); //two
console.log(Symbol.keyFor(sy4)); //two
//Symbol.for() Symbol.keyFor() 互为逆运算
let key = Symbol.keyFor(sy3);
let value = Symbol.for(key);
console.log(value == sy3); //true